#include "Json.hpp"
#include <fstream>
#include <string.h>
#include <iostream>

#define JSONTEXT_NULL "null"
#define JSONTEXT_TRUE "true"
#define JSONTEXT_FALSE "false"

#define READFILE_BUFFSIZE 0xffff

namespace ym
{
    class Parser
    {
    private:
        char jsonText[READFILE_BUFFSIZE];
        char *currentChar;
        char *jsonEnd;
        bool nextElement;

    public:
        __declspec(dllexport) Parser();
        __declspec(dllexport) ~Parser();
        __declspec(dllexport) Json *nextJson();
        __declspec(dllexport) bool findNextChar(const char ch);
        __declspec(dllexport) Json *load(const char *str);
        __declspec(dllexport) Json *loadFromFile(const char *filename);
        __declspec(dllexport) void skipWhiteSpace();
        __declspec(dllexport) bool isEnd();
        __declspec(dllexport) Json *parseNull();
        __declspec(dllexport) Json *parseBool();
        __declspec(dllexport) Json *parseNumber();
        __declspec(dllexport) Json *parseString();
        __declspec(dllexport) Json *parseArray();
        __declspec(dllexport) Json *parseObject();
    };
}